package com.example.joblinker.dto;

import lombok.Data;

import javax.validation.constraints.Future;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class JobFairDTO {
    
    /**
     * 招聘会ID（创建时无需传入）
     */
    private Long id;
    
    /**
     * 招聘会标题
     */
    @NotBlank(message = "招聘会标题不能为空")
    private String title;
    
    /**
     * 招聘会地点
     */
    @NotBlank(message = "招聘会地点不能为空")
    private String location;
    
    /**
     * 招聘会开始时间
     */
    @NotNull(message = "开始时间不能为空")
    @Future(message = "开始时间必须是未来时间")
    private LocalDateTime startTime;
    
    /**
     * 招聘会结束时间
     */
    @NotNull(message = "结束时间不能为空")
    @Future(message = "结束时间必须是未来时间")
    private LocalDateTime endTime;
    
    /**
     * 企业容量上限
     */
    @NotNull(message = "企业容量上限不能为空")
    @Min(value = 1, message = "企业容量上限必须大于0")
    private Integer companyLimit;
    
    /**
     * 求职者容量上限
     */
    @NotNull(message = "求职者容量上限不能为空")
    @Min(value = 1, message = "求职者容量上限必须大于0")
    private Integer userLimit;
    
    /**
     * 招聘会描述
     */
    @NotBlank(message = "招聘会描述不能为空")
    private String description;
    
    /**
     * 参会须知
     */
    @NotBlank(message = "参会须知不能为空")
    private String notice;
    
    /**
     * 联系方式
     */
    @NotBlank(message = "联系方式不能为空")
    private String contact;
    
    /**
     * 招聘会类型（0-线下 1-线上）
     */
    @NotNull(message = "招聘会类型不能为空")
    private Integer type;
    
    /**
     * 招聘会行业ID列表
     */
    @NotNull(message = "招聘会行业不能为空")
    private List<Integer> industryIds;
    
    /**
     * 详细地址（线下招聘会使用）
     */
    private String address;
    
    /**
     * 海报URL
     */
    private String poster;
} 